perm filename SUBR.F4[2,LCS]1 blob sn#153764 filedate 1975-04-04 generic text, type T, neo UTF8
00100	C*****  THIS ROUTINE DIVIDES OCTAVE INTO ANY NUMBER OF EQUAL PARTS
00200	
00300		SUBROUTINE SUBR
00400	 	COMMON /INS/ INST(27),BG(60)
00500		COMMON P(30),INUM,IPAR,CNT(27),BT,PL(48),IREST,DF,DUR(27)
00600	C   INST=INSTRUMENT NAME,  BG=BEGIN TIME OF EACH INST.
00700	C   INUM=INST#  IPAR=PARAM#  BT=BASIC TIME P1  WHEN SUBROUTINE IS
00800	C   CALLED, IF IREST IS <0, THAT NOTE WILL BE A REST.
00900	C   NOTE #S IN SUBROUTINE: (1-84)  C4=37  FS4=43  C5=49  F1=86
01000	C   F15=100 (NO F16!)
01100	C   DUR=FINAL DURATION OF EACH INST.  IF DUR IS IN TERMS OF A
01200	C   NUMBER OF NOTES(NOT TIME) THE DUR NUMBER WILL BE
01300	C   10000+THE NUMBER OF NOTES.
01400	
01500	
01600	C   CALL SUBROUTINE FROM P12. P3 CAN BE NOTES OR NUMBS.
01700		I=P(3)
01800		X=I
01900	C  THIS GETS RID OF TRAILING DECIMALS IF RAND SELECTION!
02000		IF(PL(3).EQ.1)GO TO 1
02100	
02200		X=30.868*2**(X/12)
02300	C  X=FREQ. IN HZ. BASED ON NOTE NUM. IN P3.
02400	
02500		PL(3)=1.
02600	C  THIS CAUSES FREQ. NUM TO PRINT INSTEAD OF LITERAL CHARACTERS.
02700	
02800	1	P(3)=X*2**(P(11)/P(12))
02900	C  P12=# OF DIVISIONS OF THE OCTAVE.  P11=CHROMATIC STEP IN THAT DIV.
03000		RETURN
03100		END
03200	
03300	C   STEPS  ; TYPICAL INPUT FOR MICROTONE SUBROUTINE.
03400	C   CLAR  /P2 .3/P3 A3/P4 1000;
03500	C   P5 F1/P7 F4/P10 1;
03600	C   P11 NUM/0/1/2/3/4/5/6/7/8/9/FINE*;  9 STEPS UP AN OCTAVE.
03700	C   P12 9 SUBR/END;  OCTAVE IS DIVIDED INTO 9 PARTS.